'use strict';

exports.main = async (event, context) => {
	const db = uniCloud.database();
	// 假设 event 对象中包含了用户的纬度和经度
	// 检查经纬度参数
	const longitude = event.longitude;
	const latitude = event.latitude;
	if (!latitude || !longitude) {
		return {
			success: false,
			errMsg: '缺少纬度或经度参数'
		};
	}

	try {
		// 使用 uniCloud 数据库的地理位置查询
		const initialQueryResult = await db.collection('opendb-poi')
			.where({
				// 假设 'location' 字段存储了 POI 的地理位置信息
				location: db.command.geoNear({
					geometry: new db.Geo.Point(longitude,latitude), // 用户当前位置
					maxDistance: 1000 // 1km
				})
			})
			.get(); // 执行查询
		// 假设我们基于第一个查询的结果的某个字段来构造下一个查询条件
		// 例如，我们只对某个特定类型的POI感兴趣
		const poiType = 'shop'; // 假设我们只对类型为 'shop' 的POI感兴趣
		// 从第一个查询结果中提取出我们需要的ID列表
		const idsOfInterest = initialQueryResult.data
			.filter(poi => poi.type === poiType) // 筛选出类型为 'shop' 的POI
			.map(poi => poi._id); // 提取ID
		const finalQueryResult = await db.collection('opendb-poi')
			.where({
				// 假设 '_id' 是 opendb-poi 中与 opendb-poi 的 _id 相关联的字段
				_id: {
					$in: idsOfInterest
				}
			})
			.get();
		// 返回查询结果
		return {
			success: true,
			data: idsOfInterest
		};
	} catch (error) {
		// 返回错误信息
		return {
			success: false,
			errMsg: error.message
		};
	}
};